﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.luogu.com.cn/problem/P1551
/*
题目描述：
题目背景
若某个家族人员过于庞大，要判断两个是否是亲戚，确实还很不容易，现在给出某个亲戚关系图，求任意给出的两个人是否具有亲戚关系。

题目描述
规定：
�
x 和
�
y 是亲戚，
�
y 和
�
z 是亲戚，那么
�
x 和
�
z 也是亲戚。如果
�
x，
�
y 是亲戚，那么
�
x 的亲戚都是
�
y 的亲戚，
�
y 的亲戚也都是
�
x 的亲戚。

输入格式
第一行：三个整数
�
,
�
,
�
n,m,p，（
�
,
�
,
�
≤
5000
n,m,p≤5000），分别表示有
�
n 个人，
�
m 个亲戚关系，询问
�
p 对亲戚关系。

以下
�
m 行：每行两个数
�
�
M
i
​
 ，
�
�
M
j
​
 ，
1
≤
�
�
,

�
�
≤
�
1≤M
i
​
 , M
j
​
 ≤n，表示
�
�
M
i
​
  和
�
�
M
j
​
  具有亲戚关系。

接下来
�
p 行：每行两个数
�
�
,
�
�
P
i
​
 ,P
j
​
 ，询问
�
�
P
i
​
  和
�
�
P
j
​
  是否具有亲戚关系。

输出格式
�
p 行，每行一个 Yes 或 No。表示第
�
i 个询问的答案为“具有”或“不具有”亲戚关系。
*/

// 开始解题：
// 方法——递归
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int P[5001] = { 0 };
int f(int x) {
	if (P[x] == x) {
		return x;
	}
	return P[x] = f(P[x]);
}
void gx(int x, int y) {
	P[f(x)] = f(y);
}


int main() {
	int n = 0, m = 0, q = 0;
	cin >> n >> m >> q;
	for (int i = 1; i <= n; i++) {
		P[i] = i;
	}
	for (int i = 0; i < m; i++) {
		int x = 0, y = 0;
		cin >> x >> y;
		gx(x, y);
	}
	for (int i = 0; i < q; i++) {
		int a = 0, b = 0;
		cin >> a >> b;
		if (f(a) == f(b)) {
			cout << "Yes" << endl;
		}
		else {
			cout << "No" << endl;
		}
	}
	return 0;
}